#pragma once

#include <string>
#include <vector>
#include <iostream>
#include <thread>

#include "Structs.h"
#include "LidarDataManager.h"
#include "LidarDriverX.h"
#include "LidarMultiDriverX.h"

/// @brief 激光雷达数据管理-实例类
class LidarDataManagerImpl : public ILidarDataManager
{
public:
    LidarDataManagerImpl();

    void UseOptions(std::vector<LidarConfigurationOptions *> options) override;
    bool addPointCloudMsgCallback(PointCloudDataCallback callback) override;

    bool start() override;
    bool stop() override;
    bool dispose() override;

private:
    LidarConfigurationOptions *_options = nullptr;

    bool use_multi=false;
    LidarMultiDriverX *_lidarMultiDriver = nullptr;
};